# -*- coding: utf-8 -*-
"""
@Time    : 2024/7/27 17:26 
@Author  : ZhangShenao 
@File    : 4.中文文档的递归分割.py 
@Desc    : 使用RecursiveCharacterTextSplitter分割中文文档

当使用RecursiveCharacterTextSplitter分割中文文档时
需要自定义分隔符列表,以更好地适配中文语境

"""
from langchain_community.document_loaders import UnstructuredMarkdownLoader
from langchain_text_splitters import RecursiveCharacterTextSplitter

# 加载中文文档
loader = UnstructuredMarkdownLoader(file_path='./docs/项目API资料.md')
docs = loader.load()

# 创建RecursiveCharacterTextSplitter,并自定义中文分隔符列表
separators = [
    '\n\n',
    '\n',
    r'。|！|？',
    r'\.\s|\!\s|\?\s',  # 英文标点符号后面通常需要加空格
    r'；|;\s',
    r'，|,\s',
    ' ',
    ''
]
splitter = RecursiveCharacterTextSplitter(
    separators=separators,  # 指定自定义分隔符列表
    chunk_size=500,  # 指定文档分块大小
    chunk_overlap=50,  # 指定文档块之间的重叠部分大小
    add_start_index=True,  # 添加文档块的起始索引
    is_separator_regex=True,  # 指定分隔符为正则表达式形式
)

# 使用RecursiveCharacterTextSplitter分割文档
chunks = splitter.split_documents(docs)
for chunk in chunks:
    print(f'文档块大小: {len(chunk.page_content)}, 元数据: {chunk.metadata}')

print(chunks[2].page_content)
